package cn.edu.zafu.bigdata.bd121.Template;

import cn.hutool.core.util.ObjectUtil;

import java.util.List;
import java.util.NoSuchElementException;

/**
 * 1. (简答题)
 * 题目1：泛型方法实现求最大值
 * 描述：编写一个泛型方法findMax，用于在列表中找到最大值。
 * 要求：
 * 1.创建一个泛型方法 Template findMax(List<Template> list)，返回列表中的最大元素。
 * 2编写测试类，创建一个包含整数的列表和一个包含字符串的列表，并分别使用findMax方法查找最大值。
 *
 * @author 202211090121
 */
public class ListUtils<T> {

    /**
     * 查找列表中的最大值
     *
     * @param list 列表
     * @param <T>  泛型，要求实现Comparable接口即可以比较大小
     * @return 最大值
     */
    public static <T extends Comparable<T>> T findMax(List<T> list) {
        if (ObjectUtil.isEmpty(list)) {
            throw new IllegalArgumentException("列表不能为空");
        }
        return list.stream()
                .max(T::compareTo)
                .orElseThrow(() -> new NoSuchElementException("没能找到最大值"));
    }

}
